﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Data;
using System.Data.SqlClient;

namespace prjMateriais
{
    public partial class FrmRelatorioPadrao : Form
    {
        SqlDataAdapter sqlDataAdapter;
        string sql;
        dsMaterial dsMaterial;

        public enum relatorio
        {
            material = 0,
            movimentacoes = 1,
            materialSemmovimentacoes = 2
        }

        public FrmRelatorioPadrao(relatorio rel)
        {
            InitializeComponent();
            dsMaterial = new dsMaterial();
            gerarRelatorio(rel);
        }

        private void gerarRelatorio(relatorio rel)
        {
            switch (rel)
            {
                case relatorio.material:
                    getRelatorioMaterial();
                    break;
                case relatorio.movimentacoes:
                    getRelatorioMovimentacoes();
                    break;
                case relatorio.materialSemmovimentacoes:
                    getRelatorioMatSemMov();
                    break;
            }
        }

        private void getRelatorioMatSemMov()
        {
            String mesPassado = System.DateTime.Now.AddMonths(-2).ToString(("MM/dd/yyyy"));

            sql = ("SELECT * FROM " + ConstTabelas.MOVIMENTACOES + " WHERE Data IN (SELECT MAX(Data) FROM " + ConstTabelas.MOVIMENTACOES + " WHERE Data <= '" + mesPassado + "' GROUP BY LOTE)");
            sqlDataAdapter = Conexao.getInstance.executeQueryRelatorio(sql);
            sqlDataAdapter.Fill(dsMaterial, ConstTabelas.MOVIMENTACOES);

            loadSqlAdapter(ConstTabelas.MATERIAL);
            loadSqlAdapter(ConstTabelas.LOTE);
            loadSqlAdapter(ConstTabelas.HISTORICOMOVIMENTACAO);
            
            rptMateriasSemMov rel = new rptMateriasSemMov();
            rel.SetDataSource(dsMaterial);
            this.Text = "Relatório Material sem Movimentações";
            this.crystalReportViewer1.ReportSource = rel;
            this.ShowDialog();
        }

        private void getRelatorioMovimentacoes()
        {
            loadSqlAdapter(ConstTabelas.LOTE);
            loadSqlAdapter(ConstTabelas.MATERIAL);
            loadSqlAdapter(ConstTabelas.MOVIMENTACOES);
            loadSqlAdapter(ConstTabelas.HISTORICOMOVIMENTACAO);
            loadSqlAdapter(ConstTabelas.TIPOESTOQUE);

            rptMovimetacoes rel = new rptMovimetacoes();
            rel.SetDataSource(dsMaterial);
            this.Text = "Relatório de Movimentações";
            this.crystalReportViewer1.ReportSource = rel;
            this.ShowDialog();
        }
        private void getRelatorioMaterial()
        {
            loadSqlAdapter(ConstTabelas.MATERIAL);
            loadSqlAdapter(ConstTabelas.LOTE);

            rptRelatorioMaterial rel = new rptRelatorioMaterial();
            rel.SetDataSource(dsMaterial);
            this.Text = "Relatório de Material";
            this.crystalReportViewer1.ReportSource = rel;
            this.ShowDialog();
        }

        private void loadSqlAdapter(string tabela)
        {
            sql = SqlCrud.getInstance.selectAll(tabela);
            sqlDataAdapter = Conexao.getInstance.executeQueryRelatorio(sql);
            sqlDataAdapter.Fill(dsMaterial, tabela);
        }

        private void FrmRelatorioPadrao_Load(object sender, EventArgs e)
        {

        }
    }
}
